﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace instantget
{
    public partial class TListaUC : UserControl
    {

        int jelzettTargy = Properties.Settings.Default.Targyoldal;
        int oldalszám;

        public TListaUC()
        {
            InitializeComponent();
            kezdDtPckr.Value = DateTime.Now;
            vegDtPckr.Value = kezdDtPckr.Value + new TimeSpan(7, 0, 0, 0);

            this.fokategoriaTableAdapter.Fill(this.instantgetDataSet.fokategoria);
        }

        private void fKCmbBx_SelectedIndexChanged(object sender, EventArgs e)
        {
            AkCmbBx.Enabled = true;
            label2.Enabled = true;
            if (!fKCmbBx.Disposing)
            {
                this.alkategoriaTableAdapter.FillByFokategoria(this.instantgetDataSet.alkategoria, (int)fKCmbBx.SelectedValue);
            }
            AlkategoriaLoad();
        }

        private void AlkategoriaLoad()
        {
            AkCmbBx.DisplayMember = "alkat_nev";
            AkCmbBx.ValueMember = "alkat_id";
            AkCmbBx.DataSource = alkategoriaBindingSource;
        }

        private void kezdDtPckr_ValueChanged(object sender, EventArgs e)
        {
            vegDtPckr.Value = kezdDtPckr.Value + new TimeSpan(7, 0, 0, 0);
        }

        string targyNev;
        DateTime alfa, omega;
        int alkategoria;

        private void button1_Click(object sender, EventArgs e)
        {
            oldalakPanel.Controls.Clear();
            targyNev = targykeresTxtBx.Text;
            alfa= kezdDtPckr.Value;
            omega = vegDtPckr.Value;

            if (AkCmbBx.SelectedValue != null)
            {
                alkategoria = (int)AkCmbBx.SelectedValue;
                licittargyTableAdapter.FillByKereses(this.instantgetDataSet.licittargy,
                alfa.ToString(), alkategoria, targyNev, omega.ToString());
            }
            else
            {
                 licittargyTableAdapter.FillByKeresNoKat(this.instantgetDataSet.licittargy,
                 alfa.ToString(), targyNev, omega.ToString());
            }

            oldalszám = (int)Math.Floor((double)licittargyBindingSource.Count/jelzettTargy);
            int maradék = (licittargyBindingSource.Count) % jelzettTargy;

            if (maradék != 0)
            {
                oldalszám += 1;
            }
            
            if (oldalszám != 0)
            {
                for (int i = 0; i < oldalszám; i++)
                {
                    Oldallabel olbl = new Oldallabel(i);
                    olbl.Top = 2;
                    olbl.Width = 5;
                    olbl.AutoSize = true;
                    olbl.Left = 10 + (olbl.Width + 10) * i;
                    olbl.Text = (i + 1).ToString();
                    olbl.Click += olbl_Click;
                    oldalakPanel.Controls.Add(olbl);
                    if (olbl.ssz == 0)
                    {
                        olbl_Click(olbl, new EventArgs());
                    }
                }
            }
            else
            {
                MessageBox.Show("Nem található a bejegyzett paramétereknek megfelelő tárgy.","Keresés",MessageBoxButtons.OK);
            }
        }

        void olbl_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            tetelekPanel.Controls.Clear();

            int hossz;
            if (AkCmbBx.SelectedValue != null)
            {
                var fLTSTA = licittargyTableAdapter.GetDataByKereses(alfa.ToString(), alkategoria, targyNev, omega.ToString());
                try
                {
                    hossz = (((Oldallabel)sender).ssz + 1) * jelzettTargy;
                    targyKipakolo(sender, hossz, fLTSTA);
                }
                catch (System.IndexOutOfRangeException)
                {
                    tetelekPanel.Controls.Clear();
                    hossz = fLTSTA.Count;
                    targyKipakolo(sender, hossz, fLTSTA);
                }
            }
            else
            {
                var fLTSTA = licittargyTableAdapter.GetDataByKeresNoKat(alfa.ToString(), targyNev, omega.ToString());
                try
                {
                    hossz = (((Oldallabel)sender).ssz + 1) * jelzettTargy;
                    targyKipakolo(sender, hossz, fLTSTA);
                }
                catch (System.IndexOutOfRangeException)
                {
                    tetelekPanel.Controls.Clear();
                    hossz = fLTSTA.Count;
                    targyKipakolo(sender, hossz, fLTSTA);
                }
            }
            timer1.Enabled = true;
        }

        private void targyKipakolo(object sender, int hossz, instantget.instantgetDataSet.licittargyDataTable fLTSTA)
        {
            int j = 0;
            for (int i = ((Oldallabel)sender).ssz * jelzettTargy; i < hossz; i++)
            {
                ListaTargyakUC ltuc = new ListaTargyakUC((instantgetDataSet.licittargyRow)fLTSTA.Rows[i]);
                ltuc.Anchor = AnchorStyles.Left;
                ltuc.Anchor = AnchorStyles.Top;
                ltuc.Left = 5;
                ltuc.Top = 5 + ltuc.Height * j;
                tetelekPanel.Controls.Add(ltuc);
                j++;
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            foreach (ListaTargyakUC ltuc in tetelekPanel.Controls)
            {
                ltuc.timeLbl.Text = (ltuc.ido - DateTime.Now).ToString(@"dd\ \n\a\p\ hh\:mm\:ss");
            }
        }
    }
}
